package com.etiya.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;


import javax.faces.model.SelectItem;
import javax.persistence.EntityManager;

import com.etiya.baglanti.EntityUtil;
import com.etiya.entity.Dil;
import com.etiya.entity.KitapBilgileri;
import com.etiya.entity.KitapTurBilgileri;

@SuppressWarnings("unchecked")
public class KitapArama implements Serializable {

	public KitapArama() {
		this.defaultGelen();

		getTurBilgileri();

		dil();
	}

	private static final long serialVersionUID = -4998722471008669028L;

	private List<KitapBilgileri> kitapListesi = new ArrayList<KitapBilgileri>();

	private List<SelectItem> dilTurleriListesi = new ArrayList<SelectItem>();

	private List<SelectItem> kitapTurBilgileri = new ArrayList<SelectItem>();

	private KitapBilgileri kitapBilgileri = new KitapBilgileri();

	public void setKitapBilgileri(KitapBilgileri kitapBilgileri) {
		this.kitapBilgileri = kitapBilgileri;
	}

	public KitapBilgileri getKitapBilgileri() {
		return kitapBilgileri;
	}

	public void setKitapListesi(List<KitapBilgileri> kitapListesi) {
		this.kitapListesi = kitapListesi;
	}

	public List<KitapBilgileri> getKitapListesi() {
		return kitapListesi;
	}

	public String arama() {

		EntityManager em = EntityUtil.getEntityManager();

		String kitapAdi = "";
		Integer turId = 0;
		Integer dilId = 0;

		if (kitapBilgileri.getKitapAdi() != "") {
			kitapAdi = kitapBilgileri.getKitapAdi();
		}
		if (kitapBilgileri.getTurId().getId() !=0) {
			turId = kitapBilgileri.getTurId().getId();
		}
		if (kitapBilgileri.getDil().getDilId() != null) {
			dilId = kitapBilgileri.getDil().getDilId();
		}

		 if (turId.equals(0) && dilId.equals(0) && !kitapAdi.equals("")) {
         
			this.kitapListesi = em
					.createQuery(
							"select k from KitapBilgileri k where k.kitapAdi LIKE :kitapAdi")
					.setParameter("kitapAdi",
							"%" + kitapBilgileri.getKitapAdi() + "%")
					.getResultList();
         
		} else if (!turId.equals(0) && dilId.equals(0) && kitapAdi.equals("")) {
		    
			this.kitapListesi = em
					.createQuery(
							"select k from KitapBilgileri k where k.turId.Id=:Id")
					.setParameter("Id", kitapBilgileri.getTurId().getId())
					.getResultList();
		} else if (turId.equals(0) && !dilId.equals(0) && kitapAdi.equals("")) {
			 
			this.kitapListesi = em
					.createQuery(
							"select k from KitapBilgileri k where k.dil.dilId=:Id")
					.setParameter("Id", kitapBilgileri.getDil().getDilId())
					.getResultList();
			
		}else if(!turId.equals(0) && !dilId.equals(0) && kitapAdi.equals("")){
			
			this.kitapListesi = em
			.createQuery(
					"select k from KitapBilgileri k where k.dil.dilId=:dilId and k.turId.Id=:turId")
			.setParameter("dilId", kitapBilgileri.getDil().getDilId()).setParameter("turId",kitapBilgileri.getTurId().getId())
			.getResultList();
			
		}else if(!turId.equals(0) && dilId.equals(0) && !kitapAdi.equals("")){
			
			this.kitapListesi = em
			.createQuery(
					"select k from KitapBilgileri k where k.kitapAdi LIKE :kitapAdi and k.turId.Id=:turId")
			.setParameter("kitapAdi",
					"%" + kitapBilgileri.getKitapAdi() + "%").setParameter("turId", kitapBilgileri.getTurId().getId())
			.getResultList();
		}else if(!turId.equals(0) && !dilId.equals(0) && !kitapAdi.equals("")){
			
			this.kitapListesi = em
			.createQuery(
					"select k from KitapBilgileri k where k.kitapAdi LIKE :kitapAdi and k.turId.Id=:turId and k.dil.dilId=:dilId")
			.setParameter("kitapAdi",
					"%" + kitapBilgileri.getKitapAdi() + "%").setParameter("turId", kitapBilgileri.getTurId().getId()).setParameter("dilId", kitapBilgileri.getDil().getDilId())
			.getResultList();
			
		}		
		else if (kitapAdi.equals("") && turId.equals(0) && dilId.equals(0)) {

			this.kitapListesi = em
					.createQuery(
							"select k from KitapBilgileri k where k.kitapAdi LIKE :kitapAdi")
					.setParameter("kitapAdi",
							"%" + kitapBilgileri.getKitapAdi() + "%")
					.getResultList();
		}
		

		return null;
	}

	public String getAramaSonucu() {

		arama();

		return null;
	}

	public void defaultGelen() {

		EntityManager em = EntityUtil.getEntityManager();

		this.kitapListesi = em.createQuery("from KitapBilgileri")
				.getResultList();

	}

	public void setDilTurleriListesi(List<SelectItem> dilTurleriListesi) {
		this.dilTurleriListesi = dilTurleriListesi;
	}

	public List<SelectItem> getDilTurleriListesi() {
		return dilTurleriListesi;
	}

	public void setKitapTurBilgileri(List<SelectItem> kitapTurBilgileri) {
		this.kitapTurBilgileri = kitapTurBilgileri;
	}

	public List<SelectItem> getKitapTurBilgileri() {
		return kitapTurBilgileri;
	}

	public void getTurBilgileri() {

		EntityManager em = EntityUtil.getEntityManager();

		List<KitapTurBilgileri> kitap = em.createQuery(
				"select k from KitapTurBilgileri k").getResultList();

		for (KitapTurBilgileri kitap2 : kitap) {
			kitapTurBilgileri.add(new SelectItem(kitap2.getId(), kitap2
					.getTurAd()));
		}

	}

	public void dil() {

		EntityManager em = EntityUtil.getEntityManager();

		List<Dil> dilListesi = em.createQuery("from Dil").getResultList();

		for (Dil dil : dilListesi) {

			dilTurleriListesi.add(new SelectItem(dil.getDilId(), dil
					.getDilTipi()));
		}

	}

}
